c语言动态开辟数组(一维与二维) 您所在的位置:网站首页 c语言 静态数组 c语言动态开辟数组(一维与二维)

c语言动态开辟数组(一维与二维)

2024-07-12 19:12| 来源: 网络整理| 查看: 265

文章目录 前言一、认识malloc()与free()二、动态开辟一维数组1.常见使用情况2.动态创建数组补充说明 三、动态开辟二维数组1.使用创建一维数组的思想进行动态开辟所申请空间的连续性特点 2.使用指针数组进行动态开辟所申请空间的连续性:特点 3.使用数组指针进行动态开辟所申请空间的连续性特点 总结

前言

了解并熟悉malloc(),calloc(),realloc(),free()等动态开辟函数。 重点使用malloc()与free()进行数组的动态开辟!

提示:以下是本篇文章正文内容,下面案例可供参考

一、认识malloc()与free()

cplusplus中malloc()函数的标准形式

void* malloc (size_t size); //size_t size 为所需要开辟的内存空间大小 //单位为字节,常使用sizeof()**关键字**获得

cplusplus中free()函数的标准形式

void free (void* ptr); //与malloc(),calloc(),realloc()等函数 //搭配使用,参数为指向上述三函数使用时申请空间的指针

注意引用头文件stdlib.h

二、动态开辟一维数组 1.常见使用情况

代码如下(示例):

#include int main() { int input = 0; scanf("%d", &input); int arr[input] = { 0 }; //因为数组中必须为常量表达式 //所以此时无法成功创建数组 return 0; }

这时便可以使用动态开辟的方法解决该问题。

2.动态创建数组

代码如下(示例):

#include int main() { int input = 0; scanf("%d", &input); int* p = (int*)malloc(sizeof(int) * input); //注意对malloc()函数的返回值进行强制类型转换 for (int i = 0; i int i = 0, j = 0; int* p = (int*)malloc(sizeof(int) * Row * Column); for (i = 0; i scanf("%d", &p[i * Row + j]); //注意下标访问符中的参数形式 } } free(p); p = NULL; return 0; } 所申请空间的连续性 for (j = 0; j int i = 0, j = 0; int** p = (int**)malloc(sizeof(int*) * Row); //通俗的理解为创建了一个包含五个整型指针的数组 //即确立了数组的行数 for (i = 0; i for (j = 0; j free(p[i]); p[i] = NULL; //循环释放指向每一行数据的指针 //形式上类似于取二维数组的每一行的首地址时,arr【Row】 } free(p); p = NULL; //释放指向储存有五个行指针的数组的指针 return 0; } 所申请空间的连续性: for (j = 0; j int i = 0, j = 0; int(*p)[Column] = (int(*)[Column])malloc(sizeof(int) * Row * Column); //一次性开辟所需的全部空间 for (i = 0; i scanf("%d", &p[i][j]); } } free(p); p = NULL; return 0; } 所申请空间的连续性 for (j = 0; j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有